﻿using Gargoyle.Roton;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Gargoyle.ZZT
{
    // Busy - if true, freezes the game this tick
    // DrawMessage - draw message on the screen
    // EraseMessage - erase message on the screen, redraw border on ZZT
    // Fade - fade the board
	// LongTextInput - high score name entry and editor board name change
	// Range - gamespeed, anything that goes 1-9
	// RangeBinary - bullets/stars
	// RangeDirection - pusher direction
	// RedrawHud - refresh the whole hud
	// Scroll - display a scroll
	// TextInput - cheats, world name
    // UpdateBoard - draw board contents
	// UpdateHud - draw only values
	// YesNo - quit game, quit zzt

	interface Display
	{
		bool Busy { get; }
        void DrawMessage(ByteString message, int color);
        void EraseMessage();
        void FadeIn();
        void FadeOut();
        void LongTextInput();
		ByteString LongTextInputValue { get; }
		void Range(ByteString text);
		void RangeBinary(ByteString text);
		void RangeDirection(ByteString text);
		int RangeValue { get; }
        void RedrawBoard();
		void RedrawHudEditor();
		void RedrawHudGame();
		void RedrawHudTitle();
		void Scroll(ByteString title, ByteString data);
		int ScrollLine { get; }
		void TextInput();
		ByteString TextInputValue { get; }
        void UpdateBoard(Location location);
		void UpdateHudEditor();
		void UpdateHudGame();
		void UpdateHudTitle();
        void UpdateScreen();
		void YesNo();
		int YesNoValue { get; }
	}
}
